package cn.tedu.springboot01.proxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

public class DemoInvocationHandler implements InvocationHandler {

    private UserService target;

    public DemoInvocationHandler(UserService target) {
        this.target = target;
    }

    /**
     * @param proxy:是当前动态代理的对象
     * @param method：正在调用的目标方法
     * @param args：调用方法时传的参数
     * @return
     * @throws Throwable
     */
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("当前代理调用的方法名为：" + method);
        // 模拟@Before
        System.out.println("业务方法执行之前");
        Object value = method.invoke(target, args);
        // 模拟@After
        System.out.println("业务方法执行之后");
        return value;
    }
}
